#include "sta.h"


void event_handler(void *args, esp_event_base_t event_base, int32_t event_id, void *event_data) {
    if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START) {
        ESP_LOGI(NET_LOG_TAG, "wifi 开始连接，回调 event_handler");
        esp_wifi_connect();
    }
}

/**
 *
 * 初始化WIFI模块，提供Wifi名称和密码
 * @param ssid WIFI ssid
 * @param pwd WIFI password
 * @return status
 */
esp_err_t net_sta_run() {
    ESP_LOGI(NET_LOG_TAG, "init_net_sta");
    ESP_LOGI(NET_LOG_TAG, "① 初始化nvs_flash");
    esp_err_t err = nvs_flash_init();
    if (err == ESP_ERR_NVS_NO_FREE_PAGES || err == ESP_ERR_NVS_NEW_VERSION_FOUND) {
        nvs_flash_erase();
        nvs_flash_init();
    }
    ESP_LOGI(NET_LOG_TAG, "② 初始化esp_netif");
    err = esp_netif_init();
    ESP_LOGI(NET_LOG_TAG, "③ 创建事件循环event_loop");
    esp_event_loop_create_default();
    esp_netif_create_default_wifi_sta();
    wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
    ESP_LOGI(NET_LOG_TAG, "创建wifi驱动程序任务，并初始化wifi驱动程序");
    esp_wifi_init(&cfg);
    //注册，用于处理wifi连接的过程中的事件
    ESP_LOGI(NET_LOG_TAG, "注册回调函数");
    esp_event_handler_instance_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &event_handler, NULL, NULL);
    esp_event_handler_instance_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &event_handler, NULL, NULL);
    //配置WIFI
    wifi_config_t cfg_t = {
            .sta={
                    .ssid="CMCC-客厅",
                    .password="13609963014en"
            }
    };
    esp_wifi_set_mode(WIFI_MODE_STA);
    esp_wifi_set_config(WIFI_IF_STA, &cfg_t);
    ESP_LOGI(NET_LOG_TAG, "开始扫描");
    esp_wifi_start();
    return err;
}

